﻿#ifndef GPIOSETTING_H
#define GPIOSETTING_H

#include "mhelper.h"
#include "qvector.h"
#include <windows.h>

//寄存器 10~~25
struct GPIO{
    GPIO( )
        : remote_id(0), remote_bit(0), flip(0),
        mode_input(0), level(0), on(0) {}

    int remote_id;
    int remote_bit;
    bool flip;
    bool mode_input; // 8 模式 1为输入0为输出
    bool level;      // 默认值，1为高电平0为低电平
    bool on;
    QString toString() {

        //
        QByteArray data;
        data[0] = remote_id & 0xFF;
        data[1] = remote_bit & 0xFF;
        data[2] = (flip ? 1 << 1 : 0) | ((int)mode_input);
        data[3] = (level ? 1 << 1 : 0) | ((int)on);

    //    QString str;str.append(QString ::number( data[0], 2, 10, QLatin1Char('0') ));

        QString str=   QString("%1%2%3%4")
                .arg((BYTE) data[0], 2, 16, QLatin1Char('0'))
                .arg((BYTE) data[1], 2, 16, QLatin1Char('0'))
                .arg((BYTE) data[2], 2, 16, QLatin1Char('0'))
                .arg( (BYTE)data[3], 2, 16, QLatin1Char('0'))   ;
        return str ;
    }
};

class GpioSetting
{
public:
    GpioSetting();

    static QMap<QString, QVector<GPIO*>> gpio ;

    static void init_gpio(QString comName);
    static void save_gpio_setting();
};

#endif // GPIOSETTING_H
